package travelDream.entities;

import java.io.Serializable;
import java.lang.Boolean;
import java.lang.Float;
import java.lang.Integer;
import java.lang.String;
import java.util.List;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

import travelDream.dto.HotelDTO;

/**
 * Entity implementation class for Entity: Hotel
 *
 */
@Entity
@NamedQueries ({
	@NamedQuery(name="hotel.findAll", query="SELECT h FROM Hotel h WHERE h.in_vendita = TRUE and h.eliminato = FALSE"),
	@NamedQuery(name="hotel.findByNome", query="SELECT h FROM Hotel h WHERE h.nome LIKE :nome AND h.eliminato=false"),
	@NamedQuery(name="hotel.findByCitta", query="SELECT h FROM Hotel h WHERE h.luogo = :citta and h.eliminato=false"),
	@NamedQuery(name="hotel.findVendibileByNome", query="SELECT h FROM Hotel h WHERE h.nome LIKE :nome AND h.in_vendita = TRUE and h.eliminato=false"),
	@NamedQuery(name="hotel.findVendibileByCitta", query="SELECT h FROM Hotel h WHERE h.luogo = :citta and h.in_vendita = TRUE and h.eliminato=false"),
	@NamedQuery(name="hotel.findAllAncheNonVendibili", query="SELECT h FROM Hotel h WHERE h.eliminato = FALSE"),
})

public class Hotel implements Serializable, ISoggiorno {

	   
	@Id
	@GeneratedValue
	private Integer id;
	@NotNull
	private String luogo;
	@NotNull
	private String nome;
	@NotNull
	private String descrizione;
	@NotNull
	private Boolean in_vendita;
	@NotNull
	private Boolean eliminato;
	@NotNull
	private Float prezzo;
	
	@ManyToMany(mappedBy="hotel")
	private List<PacchettoPreconfigurato> pacchetti_preconfigurati;
	
	private static final long serialVersionUID = 1L;

	public Hotel() {
		super();
	}   
	
	public Hotel(HotelDTO hotelDTO) {
		super();
		this.nome = hotelDTO.getNome();
		this.luogo = hotelDTO.getLuogo();
		this.prezzo = hotelDTO.getPrezzo();
		this.descrizione = hotelDTO.getDescrizione();
		this.in_vendita = hotelDTO.getInVendita();
		this.eliminato = hotelDTO.getEliminato();
	}
	
	public String getLuogo() {
		return this.luogo;
	}

	public void setLuogo(String luogo) {
		this.luogo = luogo;
	}   
	
	@Override
	public Boolean getIn_vendita() {
		return this.in_vendita;
	}

	public void setIn_vendita(Boolean in_vendita) {
		this.in_vendita = in_vendita;
	}   
	
	@Override
	public Boolean getEliminato() {
		return this.eliminato;
	}

	public void setEliminato(Boolean eliminato) {
		this.eliminato = eliminato;
	}  
	
	@Override
	public Float getPrezzo() {
		return this.prezzo;
	}

	public void setPrezzo(Float prezzo) {
		this.prezzo = prezzo;
	}
	
	public List<PacchettoPreconfigurato> getPacchetti_preconfigurati() {
		return pacchetti_preconfigurati;
	}
	
	public void setPacchetti_preconfigurati(
			List<PacchettoPreconfigurato> pacchetti_preconfigurati) {
		this.pacchetti_preconfigurati = pacchetti_preconfigurati;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getDescrizione() {
		return descrizione;
	}
	public void setDescrizione(String descrizione) {
		this.descrizione = descrizione;
	}

	@Override
	public int getId() {
		return this.id;
	}

	@Override
	public void setId(int id) {
		this.id = id;
	}	
	
}
